<?php

namespace Lite\Sql;

interface Connection {
	
	/**
	 * Abre una conexion con el servidor
	 * 
	 * @throws ConnectionException
	 */
	function open($addr, $user, $auth, $attr=null);
	
	/**
	 * Checkea el estado de conexion
	 *
	 * @return boolean
	 */
	function ping();

	/**
	 * Cierra la conexion actual
	 * 
	 * @return boolean
	 */
	function close();
	
	/**
	 * Selecciona una base de datos para utilizar
	 * 
	 * @param string $name nombre de la base de datos a utilizar
	 * 
	 * @return boolean
	 */
	function selectDb($name);
	
	/**
	 * Ejecuta una consulta SQL utilizando la conexion actual 
	 *
	 * @param string $sql
	 * 
	 * @return mixed
	 * 
	 * @throws Exception
	 */
	function execute($sql);
	
	
	/**
	 * Devuelve la cantidad de filas afectadas por la ultima consulta SQL
	 * ejecutada
	 * 
	 * @return int
	 */
	function affectedRows();
	
	
	/**
	 * Devuelve el ID generado por la ultima consulta INSERT o <code>null</code>
	 * 
	 * @return integer
	 */
	function insertId();
	
	/**
	 * Devuelve el ultimo error
	 * 
	 * @return int
	 */
	function getErrorCode();
	
	/**
	 * Devuelve el ultimo error
	 * 
	 * @return string
	 */
	function getError();
}
